﻿// 3.
function RomanNumerals() {
  this.integerToRoman = function (number) {

    // sad path
    if (isNaN(number))
      return 'invalid input';

    if (number <= 0 || number > 3000)
      return 'the number must be between 1 and 3000';

    var sequence = (number + '').split('');
    var roman = '';
    for (var i = 0; i < sequence.length; i++) {
      roman = roman + getPart(parseInt(sequence[i]), (sequence.length - 1) - i);
    }
    return roman;
  };

  function getPart(number, index) {
    var vocabulary = new Array();
    vocabulary.push(new Array('I', 'V', 'X'));
    vocabulary.push(new Array('X', 'L', 'C'));
    vocabulary.push(new Array('C', 'D', 'M'));
    vocabulary.push(new Array('M', '', ''));

    var roman = '';
    if (number == 9) {
      roman = vocabulary[index][2];
      number = number - 10;
    }
    if (number >= 4) {
      roman = vocabulary[index][1];
      number = number - 5;
    }
    for (var i = 0; i < number; i++) {
      roman = roman + vocabulary[index][0];
    }
    for (var j = number; j < 0; j++) {
      roman = vocabulary[index][0] + roman;
    }

    /*
    if (number == 1)
    roman = vocabulary[index][0];
    if (number == 2)
    roman = vocabulary[index][0] + '' + vocabulary[index][0];
    if (number == 3)
    roman = vocabulary[index][0] + '' + vocabulary[index][0] + '' + vocabulary[index][0];
    if (number == 4)
    roman = vocabulary[index][0] + '' + vocabulary[index][1];
    if (number == 5)
    roman = vocabulary[index][1];
    if (number == 6)
    roman = vocabulary[index][1] + '' + vocabulary[index][0];
    if (number == 7)
    roman = vocabulary[index][1] + '' + vocabulary[index][0] + '' + vocabulary[index][0];
    if (number == 8)
    roman = vocabulary[index][1] + '' + vocabulary[index][0] + '' + vocabulary[index][0] + '' + vocabulary[index][0];
    if (number == 9)
    roman = vocabulary[index][0] + '' + vocabulary[index][2];
    */

    return roman;
  }
}

//// 2.
//function RomanNumerals() {
//  this.integerToRoman = function (number) {
//    var sequence = (number + '').split('');
//    var roman = '';
//    for (var i = 0; i < sequence.length; i++) {
//      roman = roman + getPart(parseInt(sequence[i]), (sequence.length - 1) - i);
//    }
//    return roman;
//  };

//  function getPart(number, index) {
//    var vocabulary = new Array();
//    vocabulary.push(new Array('I', 'V', 'X'));
//    vocabulary.push(new Array('X', 'L', 'C'));
//    vocabulary.push(new Array('C', 'D', 'M'));
//    vocabulary.push(new Array('M', '', ''));

//    var roman = '';
//    if (number == 1)
//      roman = vocabulary[index][0];
//    if (number == 2)
//      roman = vocabulary[index][0] + '' + vocabulary[index][0];
//    if (number == 3)
//      roman = vocabulary[index][0] + '' + vocabulary[index][0] + '' + vocabulary[index][0];
//    if (number == 4)
//      roman = vocabulary[index][0] + '' + vocabulary[index][1];
//    if (number == 5)
//      roman = vocabulary[index][1];
//    if (number == 6)
//      roman = vocabulary[index][1] + '' + vocabulary[index][0];
//    if (number == 7)
//      roman = vocabulary[index][1] + '' + vocabulary[index][0] + '' + vocabulary[index][0];
//    if (number == 8)
//      roman = vocabulary[index][1] + '' + vocabulary[index][0] + '' + vocabulary[index][0] + '' + vocabulary[index][0];
//    if (number == 9)
//      roman = vocabulary[index][0] + '' + vocabulary[index][2];

//    return roman;
//  }
//}

//// 1.
//function RomanNumerals() {
//  this.integerToRoman = function (number) {
//    var sequence = (number + '').split('');
//    var roman = '';
//    for (var i = 0; i < sequence.length; i++) {
//      roman = roman + getPart(sequence[i], (sequence.length - 1) - i);
//    }
//    return roman;

//    /*
//    var roman = '';
//    if (number == 1)
//    roman = 'I';
//    if (number == 2)
//    roman = 'II';
//    if (number == 3)
//    roman = 'III';
//    if (number == 4)
//    roman = 'IV';
//    if (number == 5)
//    roman = 'V';
//    if (number == 6)
//    roman = 'VI';
//    if (number == 7)
//    roman = 'VII';
//    if (number == 8)
//    roman = 'VIII';
//    if (number == 9)
//    roman = 'IX';
//    if (number == 10)
//    roman = 'X';
//    if (number == 20)
//    roman = 'XX';
//    if (number == 30)
//    roman = 'XXX';
//    if (number == 40)
//    roman = 'XL';
//    if (number == 50)
//    roman = 'L';
//    if (number == 60)
//    roman = 'LX';
//    if (number == 70)
//    roman = 'LXX';
//    if (number == 80)
//    roman = 'LXXX';
//    if (number == 90)
//    roman = 'XC';
//    return roman;
//    */
//  };

//  function getPart(number, index) {
//    // trick
//    number = number * Math.pow(10, index);

//    var roman = '';
//    if (number == 1)
//      roman = 'I';
//    if (number == 2)
//      roman = 'II';
//    if (number == 3)
//      roman = 'III';
//    if (number == 4)
//      roman = 'IV';
//    if (number == 5)
//      roman = 'V';
//    if (number == 6)
//      roman = 'VI';
//    if (number == 7)
//      roman = 'VII';
//    if (number == 8)
//      roman = 'VIII';
//    if (number == 9)
//      roman = 'IX';
//    if (number == 10)
//      roman = 'X';
//    if (number == 20)
//      roman = 'XX';
//    if (number == 30)
//      roman = 'XXX';
//    if (number == 40)
//      roman = 'XL';
//    if (number == 50)
//      roman = 'L';
//    if (number == 60)
//      roman = 'LX';
//    if (number == 70)
//      roman = 'LXX';
//    if (number == 80)
//      roman = 'LXXX';
//    if (number == 90)
//      roman = 'XC';
//    return roman;
//  }
//}

//function RomanNumerals() {
//  this.integerToRoman = function (number) {
//    if (isNaN(number))
//      return 'invalid input';

//    if (number < 1 || number > 3000)
//      return 'the number must be between 1 and 3000';

//    var sequence = (number + '').split('');
//    var roman = '';
//    for (var i = 0; i < sequence.length; i++) {
//      roman = roman + getPart(parseInt(sequence[i]), (sequence.length - 1) - i);
//    }
//    return roman;
//  };

//  function getPart(number, index) {
//    var vocabulary = new Array();
//    vocabulary.push(new Array('I', 'V', 'X'));
//    vocabulary.push(new Array('X', 'L', 'C'));
//    vocabulary.push(new Array('C', 'D', 'M'));
//    vocabulary.push(new Array('M', '', ''));

//    var roman = '';
//    if (number == 9) {
//      roman = vocabulary[index][2];
//      number = number - 10;
//    }
//    if (number >= 4) {
//      roman = vocabulary[index][1];
//      number = number - 5;
//    }
//    for (var i = 0; i < number; i++) {
//      roman = roman + vocabulary[index][0];
//    }
//    for (var j = number; j < 0; j++) {
//      roman = vocabulary[index][0] + roman;
//    }
//    return roman;
//  }
//}
